package com.orm.mapping.xmltag;


import com.orm.mapping.MappingProcess;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * 环境上下文
 */

@Slf4j
public class DynamicContext {
	private StringBuilder sqlBuilder = new StringBuilder();
	
	private Map<String, Object> paramNameToValue;
	
	
	public DynamicContext(Map<String, Object> paramNameToValue) {
		this.paramNameToValue = paramNameToValue;
	}
	
	public void append(String sql) {
		sqlBuilder.append(sql);
		sqlBuilder.append(" ");
		
	}
	
	
	// 专门给if test 条件的
	public Object getValue(String test) {
		return  MappingProcess.getElVal(paramNameToValue,test);
	}
	
	
	// 最终对sql 的一大堆空格处理下吧
	// 2个以上空白全部替换为单个空格  （\n \t 要不要管呢???)
	
	// 如果存在 有意义的空格 ，比如  "    " 字符串里面的空格会造成异常错误!!,暂时不管
	public String getParseString() {
		String sql = sqlBuilder.toString();
		// String trimSql = sql.replaceAll("\\s{2,}", " ")
		// 					.replaceAll("=(?<=\\S)", " =")
		// 					.replaceAll("=(?=\\S)", "= ");
		
		// 删除多余空格
		// 给等号左右增加1个空格
		
		// log.info("经过动态解析后的sql语句：{}",trimSql);
		return sql;
	}
}
